/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Main;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author root
 */
public class Inbox4000 {

    public static void insert(Connection cnx, String corto, String numero, String texto, String tipo) throws SQLException {
        StringBuilder sb = new StringBuilder();
        sb.append("INSERT INTO APPS.INBOX_SMSC_4000 (ID, NUMERO_CORTO, TELEFONO, TEXTO, TIPO)");
        sb.append("     VALUES(APPS.SQ_INBOX_SMSC_4000.NEXTVAL, TO_NUMBER(?), TO_NUMBER(?), ?, ?)");

        PreparedStatement ps = cnx.prepareStatement(sb.toString());
        ps.setString(1, corto);
        ps.setString(2, numero);
        ps.setString(3, texto);
        ps.setString(4, tipo);

        ps.executeUpdate();
    }

    public static boolean tienePermiso(Connection cnx, String telefono) throws SQLException {

        boolean retVal = false;

        StringBuilder sb = new StringBuilder();
        sb.append("SELECT COUNT(*) CANTIDAD");
        sb.append("  FROM CELTELDB.PERMISOS_SMS ");
        sb.append(" WHERE INBOX = 'S'");
        sb.append("   AND TELEFONO = REGEXP_REPLACE(?,'(504)([0-9]{8})','\\2')");

        //System.out.println(sb.toString());

        PreparedStatement pstmt = cnx.prepareStatement(sb.toString());
        pstmt.setString(1, telefono);
        ResultSet rs = pstmt.executeQuery();
        if(rs.next() && rs.getInt(1) == 1){
            retVal = true;
        }
        

        return retVal;

    }

    public static void peticionTelefono(Connection cnx, String corto, String numero, String texto) throws SQLException {

        Inbox4000.insert(cnx, corto, numero, texto, "TELEFONO");

        StringBuilder sb = new StringBuilder();

        sb.append("WITH INFO AS (\n");
        sb.append("SELECT 'Nombre: '||NVL(TRIM(NOMBRE||' '||APELLIDO),'N/A')||CHR(10)||\n");
        sb.append("       'Anexo: '||A.ANEXO||CHR(10)||\n");
        sb.append("       'Fecha Activacion: '||A.FECHA_INICIO_SERVICIO||\n");
        sb.append("       'Tipo: PRE'||CHR(10) LINEA, 2 PRIORIDAD\n");
        sb.append("  FROM CEXT.ANEXOS A\n");
        sb.append("  JOIN CEXT.CLIENTES_PREPAGO B\n");
        sb.append("    ON A.ANEXO = B.ANEXO\n");
        sb.append(" WHERE A.TELEFONO = TO_NUMBER(REGEXP_REPLACE(?,'(504)([0-9]{8})','\\2'))\n");
        sb.append("UNION ALL\n");
        sb.append("SELECT 'Nombre: '||A.NOMBRE_CLIENTE||CHR(10)||\n");
        sb.append("       'Anexo: '||A.ANEXO||CHR(10)||\n");
        sb.append("       'Fecha Activacion: '||A.FECHA_INICIO_SERVICIO||CHR(10)||\n");
        sb.append("       'Tipo: POS'||CHR(10) LINEA, 1 PRIORIDAD\n");
        sb.append("  FROM CDWH.VW_ANEXOS_CREDITO A\n");
        sb.append(" WHERE TELEFONO = TO_NUMBER(REGEXP_REPLACE(?,'(504)([0-9]{8})','\\2'))\n");
        sb.append("ORDER BY PRIORIDAD\n");
        sb.append(")\n");
        sb.append("SELECT LINEA\n");
        sb.append("  FROM INFO\n");
        sb.append(" WHERE ROWNUM = 1");

        //System.out.println(sb.toString());

        PreparedStatement pstmt = cnx.prepareStatement(sb.toString());
        pstmt.setString(1, texto);
        pstmt.setString(2, texto);
        ResultSet rs = pstmt.executeQuery();
        if(rs.next()){
            System.out.println(rs.getString(1));
        }else {
            System.out.println("El telefono " + texto + " no existe!");
        }
        
        
    }
}
